/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @param {number} sum
 * @return {number[][]}
 */
 var pathSum = function(root, sum) {
    var ret=[];
    if(root==null){
        return ret;
    }
    function traverse(route,node,total){
        if(total==sum&&node.left==null&&node.right==null){
            ret.push(route);
            return; 
        }
        if(node.left!=null){
            traverse([...route,node.left.val],node.left,total+node.left.val);
        }
        if(node.right!=null){
            traverse([...route,node.right.val],node.right,total+node.right.val);
        }
    }
    traverse([root.val],root,root.val);
    return ret;
};

// 执行用时：
// 96 ms
// , 在所有 JavaScript 提交中击败了
// 79.71%
// 的用户
// 内存消耗：
// 48.4 MB
// , 在所有 JavaScript 提交中击败了
// 17.95%
// 的用户